The present invention relates to a multi-user load testing and performance testing tool for validating scalability of, for example, Web-based applications.
Load testing systems and software provide the ability to apply load or stress on a system by emulating a large number of users (herein termed “virtual users”) using one or more computers (herein termed “driving computers” or “driving devices”). Each virtual user performs a sequence of tasks that result in a load or stress on the system being tested. Such load testing often involves coordinating the workload of the driving computers and the virtual users to place the desired stress on the system. For example, the workload of a large number of virtual users may need to be coordinated to simulate typical customer usage during peak hours or holidays. The load driving computers are typically coordinated by a master computer (herein termed a “controlling computer” or “controlling device”).
One typical feature of load testing software is the ability to synchronize or rendezvous virtual users. One example usage is when it is desired to have all virtual users performing precisely the same task, and thus applying the desired load on the system under test, at the same time. When a rendezvous point is defined within a sequence of load testing tasks to be performed by the virtual users, the virtual users perform the load testing tasks until the rendezvous point is reached and then stop performing the tasks. In response to all of the virtual users having reached the rendezvous point (i.e., having performed all of the tasks preceding the rendezvous point), the virtual users then continue performing the tasks from the rendezvous point on.
A common point in the workload to place a rendezvous point is after the virtual users have logged into the system under test. Because the system under test may not be able to simultaneously log in hundreds or thousands of virtual users, the login process is often staggered over a period of time suitable to the system under test. It is often desirable, therefore, to begin coordinated load once the login process has been completed by all virtual users and a rendezvous point may be used to accomplish this goal.
Known load testing systems and methods achieve rendezvous by having each virtual user announce arrival at the rendezvous point by sending a message via a computer network to the controlling computer. After the controlling computer determines that all virtual users have announced arrival, the controlling computer then sends a message to each virtual user releasing them from the rendezvous point (i.e., instructing the virtual users to continue performing the tasks). While this technique meets the requirements for synchronization, the technique requires a great deal of network traffic and CPU (central processing unit) load on the controlling computer to process the arrival and release of each virtual user individually. For example, if one thousand virtual users participated in the rendezvous point, there would be one thousand network messages for arrival and another one thousand network messages for release.